<?php
/**
 * Controller de Sucesos.
 *
 *
 * @filesource          
 * @copyright		
 * @link		http://www.pragmatia.com Pragmatia
 * @package		datagro
 * @subpackage	app.controllers
 * @version     1.1
 * @license		http://www.opensource.org/licenses/mit-license.php The MIT License
 * @author      Martin Radosta <mradosta@pragmatia.com>
 */


/**
 * Clase SucesosController
 *
 * @package	    datagro
 * @subpackage	app.controllers
 */

class  SucesosController extends AppController
{
    var $name = 'Sucesos';
	var $uses = array("Suceso", "AlertasCliente", "Dominio", "Alerta", "Dato");
	var $components = array('Mailer'); 

/**
* Recibe datos desde las balanzas.
*/
    //function recibir($validacion, $datos)
    function recibir()
    {
    	//d("X");
		$validacion = $_GET['validacion'];
		$datos = $_GET['datos'];
		//$datos = str_replace("*E*", " ", $datos);
		//$datos = str_replace("*B*", "/", $datos);
		//$datos = str_replace("*DP*", ":", $datos);
		
		/* Dejo un log */
		file_put_contents("log_balanzas.txt", "\n\n\n" . date("d/m/Y H:i:s") .  "\nValidacion: " . $validacion . "\nDatos: " . $datos, FILE_APPEND);
		
		if(isset($datos) && isset($validacion) && strlen($validacion) == 15)
		{      
			if(substr($datos, 0, 6) == "070707") {
				$identificador_equipo = "070707"; //mass
			}
			else if(substr($datos, 0, 4) == "0707") {
				$identificador_equipo = "0707"; //mtv 306
			}

			if(!isset($identificador_equipo) || empty($validacion) || strlen($validacion) <> 15 || !is_numeric($validacion))
				die;
			else {
				$equipo = $this->Suceso->Equipo->findByIdentificador($identificador_equipo);
				$etiquetas = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.equipo_id"=>$equipo['Equipo']['id']));
				$sim = $this->Suceso->Sim->findByImsi($validacion);
			}
			
			if($sim['Equipo']['identificador'] <> $identificador_equipo)
				die("OKNO");

			$recibidos = explode(",", $datos);

			//soluciona el problema que el cierre lo manda en dos renglones el mtv 306
			if($identificador_equipo == "0707" && isset($recibidos[6]) && $recibidos[6] == "PESO TOTAL:" && substr($recibidos[7], -3) == "KG.")
			{
				$recibidos[6] = $recibidos[6] . " " . $recibidos[7];
				$recibidos[7] = $recibidos[8];
				array_pop($recibidos);
				$tipo = "11"; //cierre
			}

			$fecha_suceso = $hora_suceso = false;
			if($identificador_equipo == "0707" && (count($recibidos) == 9 || count($recibidos) == 8)) {
				$tmp = explode(" ", array_shift($recibidos));
				$fecha = explode("/", trim($tmp[1]));
				$fecha_suceso = "20" . $fecha[2] . "-" . $fecha[1] . "-" . $fecha[0];
				$hora = trim($tmp[0]);
				$hora_suceso = substr($hora, -5) . ":00";
			}
			elseif($identificador_equipo == "070707" && count($recibidos) == 3) {
				$tmp = explode("  ", $recibidos[0]);
				$recibidos[] = "FORMULA: " . trim(str_replace($identificador_equipo, "", $tmp[0]));
				$fecha = explode("/", trim($tmp[3]));
				$fecha_suceso = "20" . $fecha[2] . "-" . $fecha[1] . "-" . $fecha[0];

				$tmp = explode("/", $recibidos[1]);
				$kilogramos = substr($tmp[0], -4);
				$producto = trim(str_replace($kilogramos, "", $tmp[0]));
				if(substr($producto, 0, 5) == "RODEO") {
					$recibidos[] = "RODEO: " . trim(array_pop(explode(" ", $producto)));
					$tipo = "10"; //descarga
				}
				else {
					$recibidos[] = "PRODUCTO: " . $producto;
					$tipo = "9"; //carga
				}
				$tmp = explode("/", $recibidos[1]);
				$hora_suceso = $tmp[1] . ":00";
				
				$kilogramos = substr($tmp[0], -4);
				$recibidos[] = "PESO: " . $kilogramos;
				unset($recibidos[0]);
				unset($recibidos[1]);
				unset($recibidos[2]);
			}

			if($fecha_suceso && $hora_suceso) {
				$recibidos[] = "FECHA: " . $fecha_suceso;
				$recibidos[] = "HORA:" . str_replace(":", "**&**", $hora_suceso);
			}
			else
				die();

			//d($recibidos);
			$renglones = false;
			foreach($recibidos as $k=>$v)
			{
				$tmp = explode(":", $v);
				
				if(trim($tmp[0]) != "0D")            
				{
					if(trim($tmp[0]) == "CLIENTE")
						$cliente_numero = trim($tmp[1]);
					elseif(trim($tmp[0]) == "CARGA")
						$tipo = "9"; //carga
					elseif(trim($tmp[0]) == "DESCARGA")
						$tipo = "10"; //descarga
					elseif(trim($tmp[0]) == "HORA")
						$tmp[1] = str_replace("**&**", ":", $tmp[1]);
					if(isset($tmp[1]))
					{
						if(substr(trim($tmp[1]), -3, 3) == "KG.")
						{
							$kilogramos = (int) $tmp[1];
							$tmp[1] = $kilogramos;
						}
					}
					$etiqueta = $this->__getEtiqueta($etiquetas, trim($tmp[0]));
					$r = false;
					if($etiqueta)
					{
						$r['valor'] = trim($tmp[1]);
						$r['etiqueta_id'] = $etiqueta['id'];
						$r['etiqueta_nombre'] = $etiqueta['nombre'];
						$r['ayuda'] = $etiqueta['ayuda'];
						$r['tipo_dato'] = $etiqueta['tipo_dato'];
						$renglones[] = $r;
					}
				}//if
			}//foreach

			$suceso['fecha_hora_recepcion'] = date("Y-m-d H:i:s");
			$suceso['usuario_id'] = $sim['Sim']['usuario_id'];
			$suceso['cliente_id'] = "";	
			if(isset($cliente_numero) && is_numeric($cliente_numero)) {
				$cliente = $this->Suceso->Usuario->findByNumeroAsociado($cliente_numero);
				if(isset($cliente['Usuario']['id']))
					$suceso['cliente_id'] = $cliente['Usuario']['id'];
			}
			$suceso['tipo'] = $tipo; 
			$suceso['equipo_id'] = $equipo['Equipo']['id'];
			$suceso['fecha_hora'] = $fecha_suceso . " " . $hora_suceso;
			//$suceso['hora'] = $hora_suceso;
			$suceso['sim_id'] = $sim['Sim']['id'];
			$suceso['kilogramos'] = $kilogramos;

			
			//verifico que el suceso no este en la base ya
			$this->Suceso->expects();
			$find = $suceso;
			unset($find['fecha_hora_recepcion']);
			$res = $this->Suceso->find($find);
			if(!empty($res)) {//el suceso ya existe en la base, no lo cargo de nuevo
				die("OK");
			}
			

			$save = array('Suceso' => $suceso);
			foreach($renglones as $valor_renglon) {
				$renglon['Renglon'][] = 
									array(	'etiqueta_id'			=> $valor_renglon['etiqueta_id'],
											'etiqueta_nombre'		=> $valor_renglon['etiqueta_nombre'],
											'tipo_dato'				=> $valor_renglon['tipo_dato'],
											'ayuda'					=> $valor_renglon['ayuda'],
											'valor'					=> $valor_renglon['valor']);
			}
			$suceso_renglones = am($save, $renglon);
			//d($suceso_renglones);
			if($this->Suceso->save($suceso_renglones)) {
				$suceso_renglones['Suceso']['id'] = $this->Suceso->getLastInsertID();
				echo "OK";
			}

			//verifico si debo enviar alertas
			$alertas = $this->AlertasCliente->findAll(array("AlertasCliente.tipo_equipo"=>34, "AlertasCliente.estado"=>"Vigente", "AlertasCliente.usuario_id"=>$suceso['usuario_id'], "fecha_vigencia_desde"=>"<=" . date("Y-m-d H:m:s"), array('OR'=>array(array("fecha_vigencia_hasta"=>">" . date("Y-m-d H:m:s")), array("fecha_vigencia_hasta"=>null)))));
			$tipo_sucesos = $this->Dominio->generateList(array("id"=>$suceso['tipo']), null, null, null, "{n}.Dominio.valor");

			$k = key($tipo_sucesos);
			$valor_dominio = $tipo_sucesos[$k];
			$tipo = array("id"=>$k, "valor"=>$valor_dominio);

			$suceso_renglones = am($suceso_renglones, array("Tipo"=>$tipo));

			$this->enviarAlerta($alertas, $suceso_renglones);
	
			die;
		}//if
		die;
	}//function






	function enviarAlerta($alertas, $suceso)
	{
		$log = array();
		//debug($alertas);
		//debug($suceso);
		foreach($alertas as $k=>$v)
		{
			if($suceso['Suceso']['tipo'] == $v['AlertasCliente']['tipo_suceso']) {
				$criterios = unserialize($v['AlertasCliente']['contenido']);
				//debug($criterios);

				$disparar=false;
				$cantidad = 0;
				//d($suceso['Renglon']);
				foreach($suceso['Renglon'] as $k1=>$v1) {
					foreach($criterios as $c) {
						if($c['etiqueta'] == $v1['etiqueta_id']) {
							if(preg_match("/(\d\d)\/(\d\d)\/(\d\d\d\d)/", $c['valor'], $matches)) {
								$c['valor'] = $matches[3] . "-". $matches[2] . "-". $matches[1];
							}
							switch ($c['operador']) {
								case "mayor":
									if($v1['valor'] > $c['valor']) {
										$cantidad++;
										break;
									}
								break;
								case "menor":
									if($v1['valor'] < $c['valor']) {
										$cantidad++;
										break;
									}
								break;
								case "mayorigual":
									if($v1['valor'] >= $c['valor']) {
										$cantidad++;
										break;
									}
								break;
								case "menorigual":
									if($v1['valor'] <= $c['valor']) {
										$cantidad++;
										break;
									}
								break;
								case "igual":
									if($v1['valor'] == $c['valor']) {
										$cantidad++;
										break;
									}
								break;
								case "distinto":
									if($v1['valor'] != $c['valor']) {
										$cantidad++;
										break;
									}
								break;
							} //switch
						}//if etiqueta=criterio
					}//foreach criterios
				}//foreach renglon

				//d($cantidad);
				//d(count($criterios));
				if (count($criterios) == $cantidad) { //debo disparar una alerta
					$alerta['alerta_cliente_id'] = $v['AlertasCliente']['id'];
					$alerta['usuario_id'] = $v['AlertasCliente']['usuario_id'];
					$alerta['fecha'] = date("Y-m-d H:i:s");
					$alerta['suceso_id'] = $suceso['Suceso']['id'];
					$alerta['dato_id'] = "0";
					$alerta['sim_id'] = $suceso['Suceso']['sim_id'];

					//creo el texto del mail
					$envioMail = false;
					$texto = "";
					if(isset($v['Cliente']['nombre']) && !empty($v['Cliente']['nombre'])) {
						$nombre = $v['Cliente']['nombre'];
					}
					else {
						$nombre = $v['Usuario']['nombre'];
					}

					$texto .= "Estimado Sr/a <b>" . $nombre . "</b>:<br/><br/>";
					$texto .= "Nos comunicamos con usted para hacerle saber que la alerta <b>" . $v['AlertasCliente']['nombre'] . "</b> que usted ha configurado en nuestros sistemas se ha accionado.<br/>";

					$texto .= "El suceso que desencadeno la alerta es el suceso de fecha <b>" . $this->Formato->formatearFechaHora($suceso['Suceso']['fecha_hora']) . "</b></b> de tipo <b>" . $suceso['Tipo']['valor'] . "</b><br/><br/>";

					$texto .= "<br/>";
					$texto .= "A continuacion se adjunta el detalle del suceso:";
					$texto .= "<br/>";

					$texto .= "<table border=1>";

					foreach($suceso['Renglon'] as $k2=>$v2)
					{
						$texto .= "<tr>";
						$texto .= "<td>";
						$texto .= $v2['etiqueta_nombre'];
						$texto .= "</td>";
						$texto .= "<td>";

						if(!empty($v2['ayuda']))
							$ayuda = $v2['ayuda'];
						else
							$ayuda = "";

						switch($v2['tipo_dato'])
						{
							case "15":
								$texto .= "<b>" . $v2['valor'] . " " . $ayuda . "</b>";
								break;
							case "17":
								$texto .= "<b>" . $this->Formato->formatearHora($v2['valor']) . " " . $ayuda . "</b>";
								break;
							case "14":
								$texto .= "<b>" . $v2['valor'] . " " . $ayuda . "</b>";
								break;
							case "16":
								$texto .= "<b>" . $this->Formato->formatearFecha($v2['valor']) . " " . $ayuda . "</b>";
								break;
						}
						$texto .= "</td>";
						$texto .= "</tr>";
					}

					$texto .= "</table>";
					$texto .= "<br/>";
					$texto .= "<br/>";
					$texto .= "Para mas informacion puede entrar al sistema haciendo click <a href='http://www.datagro.com.ar'>aqui</a>";
					 
					$this->Mailer->From = "postmaster@datagro.com.ar";
					$this->Mailer->Sender = "postmaster@datagro.com.ar";
					
					$this->Mailer->FromName = "Alertas - DataAgro";
					//$this->Mailer->AddAddress($notificacion['destino']);
					$this->Mailer->Subject = "Se ha producido una nueva alerta";
					$this->Mailer->Body = $texto;
					$this->Mailer->IsHTML (true);
					 
					$this->Mailer->IsSMTP( true );
					$this->Mailer->Host     = "127.0.0.1";
					$this->Mailer->Mailer   = "smtp";

					$this->Mailer->SMTPAuth = true;
					$this->Mailer->Username = 'postmaster@datagro.com.ar';
					$this->Mailer->Password = 'data8877';

					$this->Alerta->save(array("Alerta"=>$alerta));
					$alerta_id = $this->Alerta->getLastInsertId();
					
					foreach($v['AlertasClienteNotificacion'] as $notificacion) {
					
						$saveNotificacion['notificacion'] = $notificacion['notificacion'];
						$saveNotificacion['destino'] = $notificacion['destino'];
						$saveNotificacion['alerta_id'] = $alerta_id;
						$saveNotificacion['estado'] = "E";
						
						$log[] = "se envio a " . $notificacion['destino'] . "( " . $v['AlertasCliente']['nombre'] . " )";
						if ($notificacion['notificacion'] == "8") //email
						{
							$this->Mailer->AddAddress($notificacion['destino']);
							$envioMail = true;
						}
						elseif($notificacion['notificacion'] == 7) //sms
						{
							for($ii=1; $ii<=10; $ii++) {
								$filename = APP . "webroot" . DS . "files" . DS . "alerta_sin_enviar" . $ii;

								if (!file_exists($filename)) {
									break;
								}
								else {
									$filename = null;
								}
							}

							if(!empty($filename)) {
								$sms = $notificacion['destino'] . "|" . "Datagro - Alertas, se ha disparado su alerta " . $v['AlertasCliente']['nombre'];
								file_put_contents($filename, $sms);
							}
						/*
							$modem = fopen("/usr/local/apache2/htdocs/datagro.com.ar/ttyS0", "r+"); 
							stream_set_timeout($modem, 4); 

							if (!$modem){ 
								echo "No es posible abrir el modem."; 
							} 

							fputs($modem,'AT+CMGF=1' . "\r\n"); 
							$buffer = fgets($modem, 32); 
							  
							fputs($modem,'AT+CMGS=' . $notificacion['destino'] . "\r"); 
							$buffer = fgets($modem, 32); 
														
							fputs($modem, 'Datagro - Alerta' . "\r"); 
							fputs($modem, 'Se ha disparado su alerta ' . $v['AlertasCliente']['nombre'] . "\r"); 
							fputs($modem, chr(26) . "\r"); 
							$buffer = fgets($modem, 32); 
							fclose($modem);
							unset($modem);
							sleep(4);
						*/
						}
						$this->Alerta->AlertasNotificacion->create();
						$this->Alerta->AlertasNotificacion->save($saveNotificacion);
					}//foreach notificacion

					if($envioMail) {
						$envioMail = false;
						if(!$this->Mailer->Send()) {
							$log[] = "Mail error: " . $this->Mailer->ErrorInfo;
						}
						//$this->Mailer->ClearAllRecipients();
					}
				}//if count = cantidad
			}//if tipos
		}//foreach alertas

		if(isset($log) && !empty($log)) {
			$log[] = "Salieron " . count($log) . " alertas";
			array_unshift($log, date('d/m/Y H:i:s'));
			array_unshift($log, "   ");
			array_unshift($log, " ");
			file_put_contents("alertas.txt", implode("\n", $log), FILE_APPEND);
			//file_put_contents("alertas.txt", implode("\n", $log));
		}
	}//funcion


	function __getEtiqueta($etiquetas, $nombre)
	{
		foreach($etiquetas as $k=>$v)
		{
			if($v['Etiqueta']['nombre_ticket'] == $nombre)
			{
				return array(		"id"=>$v['Etiqueta']['id'], 
									"nombre"=>$v['Etiqueta']['nombre'],
									"ayuda"=>$v['Etiqueta']['ayuda'],
									"tipo_dato"=>$v['Etiqueta']['tipo_dato']);
			}
		}
		return false;
	}


	function renglones($suceso_id = false) {
        if ($suceso_id && is_numeric($suceso_id))
        {
			$this->Suceso->recursive = 2;
			$suceso = $this->Suceso->read(null, $suceso_id);
			foreach($suceso['Renglon'] as $k=>$v) {
				$tmp_renglon[$v['Etiqueta']['secuencia']] = $v;
			}
			unset($suceso['Renglon']);
			ksort($tmp_renglon);
			$suceso['Renglon'] = $tmp_renglon;
            $this->set("registros", $suceso);
			$this->render("renglones", "ajax");
        }   
	}

/**
 * Index.
 *
 */
    function index()
    {
		if($this->Session->check('Sim')) {
			$sim = $this->Session->read('Sim');
			if(isset($sim['Equipo']['TipoEquipo']['valor']) && $sim['Equipo']['TipoEquipo']['valor'] == "Monitor Cosecha") {
				$this->redirect("../datos/index", null, true);
			}
			$this->data['Filtro']['Suceso-sim_id'] = $sim['Sim']['id'];
		}
		else {
			$this->Session->setFlash('Debe seleccionar un Modulo antes de continuar.', 'error');
			$this->redirect("../sims/seleccionar", null, true);
		}
    	
		$usuario = $this->Session->read('Usuario');
		if ($usuario['Grupo']['id'] != 1) { // si no es un administrador
			if(empty($usuario['Usuario']['usuario_id'])) //es un padre, ve todos los sucesos de el y de sus hijos
			{
				$this->data['Filtro']['Suceso-usuario_id'] = $usuario['Usuario']['id'];
				$this->set('clientes', $this->Suceso->Usuario->generateList(array("usuario_id"=>$usuario['Usuario']['id']), null, null, null, "{n}.Usuario.nombre"));
			}
			else { //es un hijo, solo ve los sucesos de el
				if(!empty($usuario['Usuario']['numero_asociado'])) {
					$this->data['Filtro']['Suceso-cliente_id'] = $usuario['Usuario']['id'];
				}

				if(!empty($usuario['Usuario']['fecha_hora_desde']) && $usuario['Usuario']['fecha_hora_desde'] <> "0000-00-00 00:00:00") {
							$this->data['Filtro']['Suceso-fecha_hora__desde'] = $this->Formato->formatearFechaHora($usuario['Usuario']['fecha_hora_desde']);
				}
				if(!empty($usuario['Usuario']['fecha_hora_hasta']) && $usuario['Usuario']['fecha_hora_hasta'] <> "0000-00-00 00:00:00") {
						$this->data['Filtro']['Suceso-fecha_hora__hasta'] = $this->Formato->formatearFechaHora($usuario['Usuario']['fecha_hora_hasta']);
				}
			}
		}
		else {
			$this->set('puedeEliminar', "true");
		}

		if(!empty($this->data))
		{
			$condicion = $this->Filtro->generarCondicion($this->data['Filtro']);
			$this->paginate['conditions'] = $condicion;
		}

		$etiquetas_carga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"9"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_carga))
			$tipos[9] = 9;
		$etiquetas_descarga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"10"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_descarga))
			$tipos[10] = 10;
		$etiquetas_cierre = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"11"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_cierre))
			$tipos[11] = 11;
					
		$tipos_sucesos = $this->Dominio->generateList(array("nombre"=>"tipo_suceso"), null, null, null, "{n}.Dominio.valor");
		$tipos_sucesos = array_intersect_key($tipos_sucesos, $tipos);
		$this->set('tipos_sucesos', $tipos_sucesos);
		
		//$this->set('tipos_sucesos', $this->Suceso->Dominio->generateList(array("nombre"=>"tipo_suceso"), null, null, null, "{n}.Dominio.valor"));	
		$this->paginate['order'] = "fecha_hora asc";
		$this->set('registros', $this->paginate());
    }



/**
 * View.
 *
 */
   function view($id = false) 
   {
        if ($id && is_numeric($id))
        {
			$this->Suceso->recursive = 2;
			$suceso = $this->Suceso->read(null, $id);
			foreach($suceso['Renglon'] as $k=>$v) {
				$tmp_renglon[$v['Etiqueta']['secuencia']] = $v;
			}
			unset($suceso['Renglon']);
			ksort($tmp_renglon);
			$suceso['Renglon'] = $tmp_renglon;
			$this->data = $suceso;
        }    
   }  

/**
 * Delete.
 *
 */
   function delete($id = false) 
   {
        if ($id && is_numeric($id))
        {
			if ($this->Suceso->delete($id)) {
				$this->Session->setFlash('El suceso se elimino correctamente.', 'ok');	
			}
			else {
				$this->Session->setFlash('El suceso no pudo ser eliminado correctamente.', 'error');	
			}
			$this->redirect("index", null, true);
        }    
   }  


/**
 * Reportes.
 *
 */
	function reporte($tipo = "pdf") {
		if($this->data['Filtro']['accion']=="buscar") {
			unset($this->data['Suceso']);
		}

		if($this->Session->check('Sim')) {
			$sim = $this->Session->read('Sim');
			$this->data['Filtro']['Suceso-sim_id'] = $sim['Sim']['id'];
		}
		else {
			$this->Session->setFlash('Debe seleccionar un Modulo antes de continuar.', 'error');
			$this->redirect("../sims/seleccionar", null, true);
		}

		if(isset($this->data['Reporte']['tipo']) && ($this->data['Reporte']['tipo'] == "pdf" || $this->data['Reporte']['tipo'] == "excel"))
			$tipo = $this->data['Reporte']['tipo'];
		
		$usuario = $this->Session->read('Usuario');
		if(empty($usuario['Usuario']['usuario_id'])) //es un padre, ve todos los sucesos de el y de sus hijos
		{
			$this->data['Filtro']['Suceso-usuario_id'] = $usuario['Usuario']['id'];
			$this->set('clientes', $this->Suceso->Usuario->generateList(array("usuario_id"=>$usuario['Usuario']['id']), null, null, null, "{n}.Usuario.nombre"));
		}
		else { //es un hijo, solo ve los sucesos de el
			if(!empty($usuario['Usuario']['numero_asociado'])) {
				$this->data['Filtro']['Suceso-cliente_id'] = $usuario['Usuario']['id'];
			}

			if(!empty($usuario['Usuario']['fecha_hora_desde']) && $usuario['Usuario']['fecha_hora_desde'] <> "0000-00-00 00:00:00") {
				$this->data['Filtro']['Suceso-fecha_hora__desde'] = $usuario['Usuario']['fecha_hora_desde'];
			}
			if(!empty($usuario['Usuario']['fecha_hora_hasta']) && $usuario['Usuario']['fecha_hora_hasta'] <> "0000-00-00 00:00:00") {
				$this->data['Filtro']['Suceso-fecha_hora__hasta'] = $usuario['Usuario']['fecha_hora_hasta'];
			}
		}

		$que =  null;
		if(isset($this->data['Filtro']['accion']) && !empty($this->data['Filtro']['accion']) && $this->data['Filtro']['accion'] != "buscar" && $this->data['Filtro']['accion'] != "limpiar") {
			$que = $this->data['Filtro']['accion'];
			if(substr($que, 0, 5) ==  "todo_") {
				unset($this->data['Filtro']['Suceso-tipo']);
				unset($this->data['Filtro']['Suceso-cliente_id']);
				unset($this->data['Filtro']['Suceso-fecha_hora__desde']);
				unset($this->data['Filtro']['Suceso-fecha_hora__hasta']);
			}
			elseif(substr($que, 0, 10) == "seleccion_") {
				$seleccionados = false;
				if(isset($this->data['Suceso']))
					$seleccionados = $this->Filtro->extraerIdsSeleccionados($this->data['Suceso']);

				if($seleccionados)
					$this->data['Filtro']['Suceso-id'] = $seleccionados;
			}
		}
		
		$condicion = $this->Filtro->generarCondicion($this->data['Filtro']);
		$this->paginate['conditions'] = $condicion;
		$this->paginate['order'] = "fecha_hora asc";

		$tipos = array();
		$etiquetas_carga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"9"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_carga))
			$tipos[9] = 9;
		$etiquetas_descarga = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"10"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_descarga))
			$tipos[10] = 10;
		$etiquetas_cierre = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.tipo_suceso"=>'like %"11"%', "Etiqueta.equipo_id"=>$sim['Sim']['equipo_id']));
		if(!empty($etiquetas_cierre))
			$tipos[11] = 11;
					
		$tipos_sucesos = $this->Dominio->generateList(array("nombre"=>"tipo_suceso"), null, null, null, "{n}.Dominio.valor");
		$tipos_sucesos = array_intersect_key($tipos_sucesos, $tipos);
		$this->set('tipos_sucesos', $tipos_sucesos);
		$this->set('tipo', $tipo);
		
		if(!empty($que)) {

			if(strstr($que, "todo_")) {
				$this->paginate['limit']= 100000;
			}
			elseif(strstr($que, "busqueda_")) {
				$this->paginate['limit']= 100000;
			}
			elseif(strstr($que, "pagina_")) {
				$pagina = $this->data['Reporte']['pagina'];
				$this->paginate['page'] = $pagina;
			}
			elseif(strstr($que, "seleccion_")) {
				//$this->paginate['conditions'] = $condicion;
			}

			$registros = $this->paginate();

			if(count($registros) == 0) {
				$this->render("reporte"); 
				exit;
			}

			$this->set('registros', $registros);
			$etiquetas = $this->Suceso->Renglon->Etiqueta->findAll(array("Etiqueta.equipo_id"=>$sim['Equipo']['id']), null, "Etiqueta.secuencia");
			foreach($etiquetas as $etiqueta) {
				$e[$etiqueta['Etiqueta']['id']] = $etiqueta;
			}
			$this->set('e', $e);
			$this->set('etiquetas', $etiquetas);
			if($tipo == "excel") {
			   
			   $this->render("reporte_excel", "excel");
			}
			elseif($tipo == "pdf") {
			   $this->render("reporte_pdf", "pdf");
			}
		}
		else {
			$this->set('registros', $this->paginate());
		}
   }  
}
?>